private elemental subroutine split_CH(string, word, set, separator, back)
Split a varying string into two verying strings
Arguments
Type |
Intent | Optional | Attributes |
|
Name |
|
type(varying_string),
|
intent(inout) |
|
|
:: |
string |
|
type(varying_string),
|
intent(out) |
|
|
:: |
word |
|
character(len=*),
|
intent(in) |
|
|
:: |
set |
|
type(varying_string),
|
intent(out), |
optional |
|
:: |
separator |
|
logical,
|
intent(in), |
optional |
|
:: |
back |
|
Variables
Type |
Visibility | Attributes |
|
Name |
| Initial | |
logical,
|
private |
|
:: |
back_ |
|
|
|
integer,
|
private |
|
:: |
i_separator |
|
|
|
Source Code
elemental subroutine split_CH (string, word, set, separator, back)
type(varying_string), intent(inout) :: string
type(varying_string), intent(out) :: word
character(LEN=*), intent(in) :: set
type(varying_string), intent(out), optional :: separator
logical, intent(in), optional :: back
logical :: back_
integer :: i_separator
if(PRESENT(back)) then
back_ = back
else
back_ = .false.
endif
i_separator = scan(string, set, back_)
if(i_separator /= 0) then
if(back_) then
word = extract(string, start=i_separator+1)
if(PRESENT(separator)) separator = extract(string, start=i_separator, finish=i_separator)
string = extract(string, finish=i_separator-1)
else
word = extract(string, finish=i_separator-1)
if(PRESENT(separator)) separator = extract(string, start=i_separator, finish=i_separator)
string = extract(string, start=i_separator+1)
endif
else
word = string
if(PRESENT(separator)) separator = ''
string = ''
endif
! Finish
return
end subroutine split_CH